// models/ai_role_model.go
package models

import (
	"github.com/sirupsen/logrus"
	"gorm.io/gorm"
)

type AiRoleModel struct {
	Model
	Title       string         `gorm:"size:32" json:"title"`
	Avatar      string         `gorm:"size:256" json:"avatar"`
	UserID      uint           `json:"userID"` // 角色创建人
	UserModel   UserModel      `gorm:"foreignKey:UserID" json:"-"`
	Status      int8           `json:"status"`                  // 角色状态  0 系统创建 1  能够在角色广场看到的   2  热门角色  3 用户创建，用户可见
	Category    string         `gorm:"size:16" json:"category"` // 角色分类
	Abstract    string         `gorm:"size:128" json:"abstract"`
	Prompt      string         `gorm:"size:1024" json:"prompt"` // 提示词
	IsSquare    bool           `json:"isSquare"`                // 是否在角色广场
	IsSystem    bool           `json:"isSystem"`                // 是否是系统角色
	IsReview    bool           `json:"isReview"`                // 是否在审核
	SessionList []SessionModel `gorm:"foreignKey:RoleID" json:"-"`
	ChatList    []ChatModel    `gorm:"foreignKey:RoleID" json:"-"`
}

func (air *AiRoleModel) BeforeDelete(tx *gorm.DB) error {
	logrus.Infof("删除角色 %s  角色id：%d", air.Title, air.ID)

	// 对话表
	var chatList []ChatModel
	tx.Delete(&chatList, "role_id = ?", air.ID)
	logrus.Infof("删除对话记录 %d 条", len(chatList))

	// 会话表
	var sessionList []SessionModel
	tx.Delete(&sessionList, "role_id = ?", air.ID)
	logrus.Infof("删除会话记录 %d 条", len(sessionList))

	// 角色工单表
	var workList []AiRoleWorkOrderModel
	tx.Delete(&workList, "ai_role_id = ?", air.ID)
	logrus.Infof("删除角色工单 %d 条", len(workList))

	return nil
}
